package tv.huan.media.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tv.huan.common.annotation.DataScope;
import tv.huan.common.core.text.Convert;
import tv.huan.common.utils.DateUtils;
import tv.huan.media.domain.ItemAlbum;
import tv.huan.media.mapper.ItemAlbumMapper;
import tv.huan.media.mapper.ItemMapper;
import tv.huan.media.domain.Item;
import tv.huan.media.service.IItemService;
import tv.huan.system.domain.SysDept;
import tv.huan.system.mapper.SysDeptMapper;

/**
 * 项目Service业务层处理
 * 
 * @author admin
 * @date 2019-10-08
 */
@Service
public class ItemServiceImpl implements IItemService 
{
    @Autowired
    private ItemMapper itemMapper;

    @Autowired
    private SysDeptMapper deptMapper;

    @Autowired
    private ItemAlbumMapper itemAlbumMapper;

    /**
     * 查询项目
     * 
     * @param itemId 项目ID
     * @return 项目
     */
    @Override
    public Item selectItemById(Long itemId)
    {
        return itemMapper.selectItemById(itemId);
    }

    /**
     * 查询项目列表
     * 
     * @param item 项目
     * @return 项目
     */
    @Override
    @DataScope(deptAlias = "i")
    public List<Item> selectItemList(Item item)
    {
        return itemMapper.selectItemList(item);
    }

    /**
     * 查询未推荐的项目
     *
     * @param albumIds 专辑id
     * @return 项目集合
     */
    @Override
    public List<Item> selectNoRecommendList(String albumIds,String iteaName){
        return itemMapper.selectNoRecommendList(Convert.toStrArray(albumIds),iteaName);
    }

    /**
     * 新增项目
     * 
     * @param item 项目
     * @return 结果
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public int insertItem(Item item)
    {
        SysDept dept = new SysDept();
        //设置驻地部门为父id
        dept.setParentId(203L);
        dept.setAncestors("0,100,200,203");
        dept.setDeptName(item.getName());
        dept.setOrderNum(deptMapper.selectChildrenDeptById(203L).size() + 1 + "");
        dept.setLeader("欢网");
        dept.setStatus("0");
        dept.setDelFlag("0");
        dept.setCreateBy("admin");
        dept.setCreateTime(DateUtils.getNowDate());
        item.setCreateTime(DateUtils.getNowDate());
        deptMapper.insertDept(dept);
        item.setDeptId(deptMapper.selectDeptIdByName(item.getName()));
        return itemMapper.insertItem(item);
    }

    /**
     * 修改项目
     * 
     * @param item 项目
     * @return 结果
     */
    @Override
    public int updateItem(Item item)
    {
        item.setUpdateTime(DateUtils.getNowDate());
        return itemMapper.updateItem(item);
    }

    /**
     * 删除项目对象
     * 
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    @Override
    @Transactional
    public int deleteItemByIds(String ids) throws Exception
    {
        Item item;
        ItemAlbum itemAlbum = new ItemAlbum();
        int count;
        Long[] idArr = Convert.toLongArray(ids);
        for (Long id : idArr){
            itemAlbum.setItemId(id);
            count = itemAlbumMapper.getItemOrAlbumUseingCountById(itemAlbum);
            if (count > 0)
                throw new Exception("项目被使用中，无法删除");
            item = itemMapper.selectItemById(id);
            this.deptMapper.removeDeptById(item.getDeptId());
        }
        return itemMapper.deleteItemByIds(Convert.toStrArray(ids));
    }
}
